// Tencent is pleased to support the open source community by making
// 蓝鲸智云 - 监控平台/日志平台 (BlueKing - Monitor/Log) available.
// Copyright (C) 2017-2022 THL A29 Limited, a Tencent company. All rights reserved.
// Licensed under the MIT License (the "License"); you may not use this file except in compliance with the License.
// You may obtain a copy of the License at http://opensource.org/licenses/MIT
// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
// an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
// specific language governing permissions and limitations under the License.
//

package receiver

import "go.opentelemetry.io/collector/model/pdata"

// Encoder 负责解析 Traces/Metrics/Logs 数据至 OT 标准数据模型
type Encoder interface {
	Type() string
	UnmarshalTraces(b []byte) (pdata.Traces, error)
	UnmarshalMetrics(b []byte) (pdata.Metrics, error)
	UnmarshalLogs(b []byte) (pdata.Logs, error)
}

type NoopEncoder struct{}

func (NoopEncoder) UnmarshalTraces(b []byte) (pdata.Traces, error)   { return pdata.NewTraces(), nil }
func (NoopEncoder) UnmarshalMetrics(b []byte) (pdata.Metrics, error) { return pdata.NewMetrics(), nil }
func (NoopEncoder) UnmarshalLogs(b []byte) (pdata.Logs, error)       { return pdata.NewLogs(), nil }
